1. Field of the Invention
Aspects of the present invention relate to an apparatus and method for balancing a load in a multi-core processor system, and more particularly, to an apparatus and method for balancing a load in a multi-core processor system in which data traffic between threads in the multi-core processor system is analyzed in real time and the results of the analysis are transmitted to a scheduler so that the scheduler can effectively balance a load of each of the threads.
2. Description of the Related Art
A process is a running program and is a dynamic entity that constantly varies. Processes consume considerable resources while being active. In order to effectively manage various system resources and to efficiently manage such processes, an operating system (OS) keeps track of the processes and the system resources interacting with the processes.
Conventionally, it is common to install only one processor in a computer system for the purpose of processing all of the processes. However, as technology has improved over time, the amount of data that needs to be processed in various fields has gradually increased. There is a clear limit in how far the performance of single-core CPUs can be improved through the acceleration of clock speeds, because single-core CPUs consume considerable amounts of power and generate a substantial amount of heat. Thus, an increasing number of computer systems are being designed as multi-processor systems equipped with a plurality of processors.
FIG. 1 is a diagram illustrating an example of operations performed by a conventional multi-processor system 100 which processes a plurality of threads, including a first thread 111, a second thread 112, a third thread 113, and a fourth thread 114. A conventional scheduler 121 controls each of the first thread 111, the second thread 112, the third thread 113, and the fourth thread 114. As shown in FIG. 1, a task 110 includes the first, second, third, and fourth threads 111, 112, 113, and 114, and the conventional scheduler 121, which is the kernel of an operating system (OS) 120, allocates each of the first, second, third, and fourth threads 111, 112, 113, and 114 to an optimum CPU according to priority and in consideration of a system load.
In the example shown in FIG. 1, the second thread 112 has a higher processing priority than the first thread 111, and the third thread 113 and the fourth thread 114 have relatively low processing priorities compared to the first thread 111. Accordingly, the first thread 111 is processed by a first processor 131, and the second thread 112 with a higher processing priority than the first, third, and fourth threads 111, 113, and 114, respectively, is processed by both a second processor 132 and a third processor 133. The third thread 113 and the fourth thread 114 with relatively low processing priorities are both processed by a fourth processor 134.
In theory, the operating speed of the multi-processor system 100 increases in proportion to the number of processors used by the multi-processor system 100. In reality, however, the conventional multi-processor system 100 has difficulty manually distributing workloads to the processors in an efficient manner. Thus, the conventional multi-processor system 100 may not be able to achieve maximum performance, because the conventional multi-processor system 100 may fail to effectively utilize a number of processors installed therein.